home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / util1 / yk211src.lha / Yak_2.11_Src / Prefs / BGUI / Blank_window.c next >
C/C++ Source or Header  |  1995-11-16  |  16KB  |  338 lines

  1. /************************************************************************
  2. *************************  BGUI BLANKER WINDOW  *************************
  3. *************************************************************************/
  4.  
  5. #include <exec/types.h>
  6. #include <intuition/intuition.h>
  7. #include <intuition/classes.h>
  8. #include <intuition/classusr.h>
  9. #include <intuition/imageclass.h>
  10. #include <intuition/gadgetclass.h>
  11. #include <intuition/intuitionbase.h>
  12. #include <libraries/bgui.h>
  13. #include <libraries/bgui_macros.h>
  14. #include <proto/exec.h>
  15. #include <proto/intuition.h>
  16. #include <proto/bgui.h>
  17. #include <proto/wb.h>
  18. #include <clib/alib_protos.h>
  19. #include <string.h>
  20.  
  21. #include "yak.h"
  22. #include "version.h"
  23. #include "gui.h"
  24. #include "Blank_Window.h"
  25. #include "Settings.h"
  26. #include "yak_locale_strings.h"
  27.  
  28. /************************************************************************
  29. *****************************  REFERENCES  ******************************
  30. ************************************************************************/
  31.  
  32. IMPORT LONG (*HandleReturnID)(LONG ID);
  33. IMPORT char *PrefsHelp;
  34.  
  35. /************************************************************************
  36. *****************************  LOCAL DATA  ******************************
  37. ************************************************************************/
  38.  
  39. struct Window   *BlankWnd = NULL;
  40. Object                  *BlankWndObj = NULL;
  41. Object                  *BlankObjects[Blank_CNT];
  42. struct IBox             BlankBox;
  43. BOOL                    BlankBoxValid = FALSE;
  44.  
  45. UBYTE *MBMethod0Labels[4];
  46. UBYTE *ScrBlMethod0Labels[4];
  47.  
  48. /************************************************************************
  49. *************************  CREATEBLANKWINDOW()  *************************
  50. *************************************************************************
  51. * Create the blanker window object tree. Returns the window object ptr or
  52. * NULL if create failed. Gadgets are initialised with default values,
  53. * InitBlankGadgets must be called after window opened to reflect current
  54. * settings.
  55. *
  56. *************************************************************************/
  57.  
  58. APTR CreateBlankWindow(void)
  59. {
  60. Object  *obj;
  61.  
  62. /* put localised strings into mouseblankmethod cycle gadget labels */
  63. MBMethod0Labels[0] = getString(NONE_STRING);
  64. MBMethod0Labels[1] = getString(SPRITES_STRING);
  65. MBMethod0Labels[2] = getString(COPPER_STRING);
  66. MBMethod0Labels[3] = NULL;
  67.  
  68. /* put localised strings into screenblankmethod cycle gadget labels */
  69. ScrBlMethod0Labels[0] = getString(NONE_STRING);
  70. ScrBlMethod0Labels[1] = getString(BLACKSCREEN_STRING);
  71. ScrBlMethod0Labels[2] = getString(DMA_STRING);
  72. ScrBlMethod0Labels[3] = NULL;
  73.  
  74. obj = WindowObject,
  75.         WINDOW_PubScreenName, PubScreenName,
  76.         WINDOW_Title,           getString(Blanking),
  77.         WINDOW_ScreenTitle,     getString(COPYRIGHT_STRING),
  78.         WINDOW_SmartRefresh, TRUE,
  79.         WINDOW_SizeBottom,      FALSE,                  /* put size gadget in right border */
  80.         WINDOW_SizeRight,       TRUE,
  81.         WINDOW_AutoAspect,      TRUE,                   /* automatic edges pixel width */
  82.         WINDOW_Position,        POS_CENTERMOUSE,
  83.         (BlankBoxValid ? WINDOW_Bounds : TAG_IGNORE), &BlankBox,
  84.         WINDOW_AppWindow,       TRUE,                   /* make it an appwindow */
  85.         WINDOW_RMBTrap,         TRUE,                   /* trap rmb - no menu */
  86.         WINDOW_CloseGadget,     FALSE,                  /* no windowclose gadget please */
  87.         (TextFont ? WINDOW_Font : TAG_IGNORE),  &Attr,  /* use font if specified */
  88.         WINDOW_HelpFile,        PrefsHelp,              /* online help system */
  89.         WINDOW_HelpNode,        "Blanking",
  90.         WINDOW_MasterGroup,
  91.                 VGroupObject, Spacing(4), HOffset(4), VOffset(4),
  92.                         StartMember,
  93.                                 /* Mouse Blank group */
  94.                                 VGroupObject, Spacing(4), HOffset(6), VOffset(4),
  95.                                                 /* add frame & title to group */
  96.                                                 NeXTFrame,
  97.                                                 FRM_Title,              getString(Blanking),
  98.                                                 FRM_Flags,              FRF_EDGES_ONLY|FRF_CENTER_TITLE|FRF_HIGHLIGHT_TITLE,
  99.                                         VarSpace(DEFAULT_WEIGHT/10),
  100.                                         StartMember,
  101.                                                 CYC_SBMethod = CycleObject,
  102.                                                         LAB_Label,              getString(SCREENBLANK_METHOD_STRING),
  103.                                                         GA_ID,                  GD_ScrBlMethod,
  104.                                                         ButtonFrame,
  105.                                                         CYC_Labels,             ScrBlMethod0Labels,
  106.                                                         CYC_Popup,              TRUE,   /* "drop-down" menu */
  107.                                                 EndObject,
  108.                                         EndMember,
  109.                                         VarSpace(DEFAULT_WEIGHT/10),
  110.                                         StartMember,
  111.                                                 CYC_MBMethod = CycleObject,
  112.                                                         LAB_Label,              getString(MOUSEBLANK_METHOD_STRING),
  113.                                                         GA_ID,                  GD_MBMethod,
  114.                                                         ButtonFrame,
  115.                                                         CYC_Labels,             MBMethod0Labels,
  116.                                                         CYC_Popup,              TRUE,   /* "drop-down" menu */
  117.                                                 EndObject,
  118.                                         EndMember,
  119.                                         VarSpace(DEFAULT_WEIGHT/10),
  120.                                         StartMember,
  121.                                                 CH_BlankMKey = CheckBoxObject,
  122.                                                         LAB_Label,              getString(BlankMouseOnKey_STRING),
  123.                                                         LAB_Place,              PLACE_RIGHT,
  124.                                                         GA_ID,                  GD_BlankMouseOnKey,
  125.                                                         ButtonFrame,
  126.                                                         FRM_Flags,              FRF_EDGES_ONLY,
  127.                                                 EndObject, FixMinWidth, NoAlign,
  128.                                         EndMember,
  129.                                         VarSpace(DEFAULT_WEIGHT/10),
  130.                                 EndObject, Weight(DEFAULT_WEIGHT*3),
  131.                         EndMember,
  132.                         VarSpace(DEFAULT_WEIGHT/10),
  133.                         StartMember,
  134.                                 /* Blank Timeout group */
  135.                                 HGroupObject, VOffset(4),
  136.                                                 /* add frame & title to group */
  137.                                                 NeXTFrame,
  138.                                                 FRM_Title,              getString(TIMEOUT_STRING),
  139.                                                 FRM_Flags,              FRF_EDGES_ONLY|FRF_CENTER_TITLE|FRF_HIGHLIGHT_TITLE,
  140.                                         VarSpace(DEFAULT_WEIGHT),
  141.                                         StartMember,
  142.                                                 VGroupObject, Spacing(2), HOffset(4),
  143.                                                         VarSpace(DEFAULT_WEIGHT/10),
  144.                                                         StartMember,
  145.                                                                 INT_ScrTimeout = StringObject,
  146.                                                                         LAB_Label,              getString(SCREENTIMEOUT_STRING),
  147.                                                                         RidgeFrame,
  148.                                                                         STRINGA_LongVal,0,
  149.                                                                         STRINGA_MaxChars,4,
  150.                                                                         STRINGA_MinCharsVisible,6,
  151.                                                                         STRINGA_Justification,STRINGRIGHT,
  152.                                                                         GA_ID,                  GD_ScrTONum,
  153.                                                                         GA_TabCycle,    TRUE,
  154.                                                                 EndObject,
  155.                                                         EndMember,
  156.                                                         VarSpace(DEFAULT_WEIGHT/10),
  157.                                                         StartMember,
  158.                                                                 INT_MouseTimeout = StringObject,
  159.                                                                         LAB_Label,              getString(MOUSETIMEOUT_STRING),
  160.                                                                         RidgeFrame,
  161.                                                                         STRINGA_LongVal,0,
  162.                                                                         STRINGA_MaxChars,4,
  163.                                                                         STRINGA_MinCharsVisible,6,
  164.                                                                         STRINGA_Justification,STRINGRIGHT,
  165.                                                                         GA_ID,                  GD_MouseTONum,
  166.                                                                         GA_TabCycle,    TRUE,
  167.                                                                 EndObject,
  168.                                                         EndMember,
  169.                                                         VarSpace(DEFAULT_WEIGHT/10),
  170.                                                 EndObject, FixMinWidth,
  171.                                         EndMember,
  172.                                         VarSpace(DEFAULT_WEIGHT),
  173.                                 EndObject, Weight(DEFAULT_WEIGHT*2),
  174.                         EndMember,
  175.                         VarSpace(DEFAULT_WEIGHT/10),
  176.                         StartMember,
  177.                                 HorizSeparator,
  178.                         EndMember,
  179.                         StartMember,
  180.                                 HGroupObject, Spacing(2),
  181.                                         VarSpace(DEFAULT_WEIGHT),
  182.                                         StartMember,
  183.                                                 BT_Return3 = Button(getString(OK_STRING),GD_Return3),
  184.                                         EndMember,
  185.                                         VarSpace(DEFAULT_WEIGHT),
  186.                                 EndObject,
  187.                         EndMember,
  188.                 EndObject,
  189.         EndObject;
  190.  
  191. if (obj)
  192.         {
  193.         /* set tab cycle order between string gadgets */
  194.         DoMethod(obj,WM_TABCYCLE_ORDER,INT_ScrTimeout,INT_MouseTimeout,NULL);
  195.         }
  196.  
  197. return(obj);
  198. }
  199.  
  200. /************************************************************************
  201. **************************  CLOSEBLANKWINDOW()  *************************
  202. *************************************************************************
  203. * Close the blanker window, disposing of the window object.
  204. *
  205. *************************************************************************/
  206.  
  207. void CloseBlankWindow(void)
  208. {
  209. if (BlankWnd)
  210.         {
  211.         GetAttr(WINDOW_Bounds,BlankWndObj,(ULONG *) &BlankBox);
  212.         BlankBoxValid = TRUE;
  213.         }
  214.  
  215. DisposeObject(BlankWndObj);
  216. BlankWndObj = NULL;
  217. BlankWnd = NULL;
  218. }
  219.  
  220. /************************************************************************
  221. *************************  INITBLANKGADGETS()  **************************
  222. *************************************************************************
  223. * Initialize the blank window gadgets to reflect current settings.
  224. *************************************************************************/
  225.  
  226. static void InitBlankGadgets(void)
  227. {
  228. InitToggleGadgets(BLANK_WINDOW);
  229. InitWindowGadget(GDX_ScrTONum, STRINGA_LongVal, blanksecs, BLANK_WINDOW);
  230. InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
  231. InitWindowGadget(GDX_MouseTONum, STRINGA_LongVal, mblanksecs, BLANK_WINDOW);
  232. InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
  233. InitWindowGadget(GDX_MBMethod, CYC_Active, mouseblank, BLANK_WINDOW);
  234. InitWindowGadget(GDX_ScrBlMethod, CYC_Active, screenblank, BLANK_WINDOW);
  235. }
  236.  
  237. /************************************************************************
  238. ************************  HANDLEBLANKRETURNID()  ************************
  239. *************************************************************************
  240. * Handle msgs arriving at blank window - supply the ID returned by BGUI.
  241. * Returns either RET_OKAY or RET_QUIT.
  242. *
  243. *************************************************************************/
  244.  
  245. LONG HandleBlankReturnID(LONG id)
  246. {
  247. LONG    ret,num;
  248.  
  249. ret = RET_OKAY;
  250.  
  251. switch(id)
  252.         {
  253.         case GD_Return3:
  254.                 CloseBlankWindow();
  255.                 if (!ShowWindowID(ROOT_WINDOW))
  256.                         ret= RET_QUIT;
  257.                 break;
  258.  
  259.         case GD_ScrTONum:
  260.                 GetAttr(STRINGA_LongVal,INT_ScrTimeout,(ULONG *)&num);
  261.                 if (num >= 0)
  262.                         blanksecs = num;
  263.                 else 
  264.                         {
  265.                         DisplayBeep(BlankWnd->WScreen);
  266.                         InitWindowGadget(GDX_ScrTONum, STRINGA_LongVal, blanksecs, BLANK_WINDOW);
  267.                         }
  268.                 break;
  269.  
  270.         case GD_MouseTONum:
  271.                 GetAttr(STRINGA_LongVal,INT_MouseTimeout,(ULONG *)&num);
  272.                 if (num >= 0)
  273.                         mblanksecs = num;
  274.                 else
  275.                         {
  276.                         DisplayBeep(BlankWnd->WScreen);
  277.                         InitWindowGadget(GDX_MouseTONum, STRINGA_LongVal, mblanksecs, BLANK_WINDOW);
  278.                         }
  279.                 break;
  280.  
  281.         case GD_BlankMouseOnKey:
  282.                 blankmouseonkey ^= TRUE;
  283.                 break;
  284.  
  285.         case GD_MBMethod:
  286.                 GetAttr(CYC_Active,CYC_MBMethod,(ULONG *)&num);
  287.                 mouseblank = num;
  288.                                 InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
  289.                 break;
  290.  
  291.         case GD_ScrBlMethod:
  292.                 GetAttr(CYC_Active,CYC_SBMethod,(ULONG *)&num);
  293.                 screenblank = num;
  294.                                 InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
  295.                 break;
  296.  
  297.         default:
  298.                 break;
  299.         }
  300.  
  301. return(ret);
  302. }
  303.  
  304. /************************************************************************
  305. **************************  SHOWBLANKWINDOW()  **************************
  306. *************************************************************************
  307. * Create and open the blank window and initialize the gadgets to reflect
  308. * current settings. Sets up HandleReturnID function, curwin, curwinobj
  309. * and curwinID. Returns TRUE or FALSE to indicate success.
  310. *
  311. *************************************************************************/
  312.  
  313. BOOL ShowBlankWindow(void)
  314. {
  315. if (BlankWndObj = (Object *)CreateBlankWindow())
  316.         {
  317.         if (BlankWnd = WindowOpen(BlankWndObj))
  318.                 {
  319.                 InitBlankGadgets();
  320.                 HandleReturnID = HandleBlankReturnID;
  321.                 curwin = BlankWnd;
  322.                 curwinobj = BlankWndObj;
  323.                 curwinID = BLANK_WINDOW;
  324.                 return(TRUE);
  325.                 }
  326.         }
  327.  
  328. CloseBlankWindow();
  329. curwin = NULL;
  330. curwinobj = NULL;
  331. wndsigflag = 0L;
  332. appwinsigflag = 0L;
  333. return(FALSE);
  334. }
  335.  
  336.  
  337.